<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>接口测试用例文档</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 20px;
        }

        h1,
        h2,
        h3 {
            color: #333;
        }

        pre {
            background-color: #f4f4f4;
            padding: 10px;
            border-radius: 5px;
            overflow-x: auto;
        }

        code {
            background-color: #eee;
            padding: 2px 4px;
            border-radius: 3px;
        }

        table {
            border-collapse: collapse;
            width: 100%;
            margin-bottom: 20px;
        }

        th,
        td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }

        th {
            background-color: #f2f2f2;
        }
    </style>
</head>

<body>

    <h1>接口测试用例文档</h1>

    <p>本测试用例文档适用于使用 JMeter 对 <code>注册</code>、<code>登录</code> 和 <code>获取所有用户</code>
        接口进行功能测试。每个接口都提供了多个正常和异常测试场景，帮助学生掌握边界值分析、等价类划分、错误猜测等测试方法。</p>

    <hr />

    <h2>1. 注册接口 (<code>/register</code>) 测试用例</h2>

    <table>
        <tr>
            <th>编号</th>
            <th>用例描述</th>
            <th>用户名</th>
            <th>密码</th>
            <th>邮箱</th>
            <th>预期状态码</th>
            <th>预期结果</th>
        </tr>
        <tr>
            <td>T01</td>
            <td>注册成功</td>
            <td>user_姓名拼音</td>
            <td>pwd_学号</td>
            <td>自己的邮箱</td>
            <td>10000</td>
            <td>注册成功（返回 <code>code: 10000</code>）</td>
        </tr>自己的邮箱
        <tr>
            <td>T02</td>
            <td>用户名已存在</td>
            <td>user_姓名</td>
            <td>pwd_学号</td>
            <td>自己的邮箱</td>
            <td>10001</td>
            <td>用户名已存在（返回 <code>code: 10001</code>）</td>
        </tr>
        <tr>
            <td>T03</td>
            <td>邮箱已被注册</td>
            <td>test_user2</td>
            <td>Test123</td>
            <td>test@example.com</td>
            <td>10002</td>
            <td>邮箱已被注册（返回 <code>code: 10002</code>）</td>
        </tr>
        <tr>
            <td>T04</td>
            <td>用户名格式不合法</td>
            <td>t</td>
            <td>Test123</td>
            <td>test@example.com</td>
            <td>10004</td>
            <td>用户名格式不合法（返回 <code>code: 10004</code>）</td>
        </tr>
        <tr>
            <td>T05</td>
            <td>密码格式不合法</td>
            <td>test_user</td>
            <td>123</td>
            <td>test@example.com</td>
            <td>10003</td>
            <td>密码格式不合法（返回 <code>code: 10003</code>）</td>
        </tr>
        <tr>
            <td>T06</td>
            <td>邮箱格式不合法</td>
            <td>test_user</td>
            <td>Test123</td>
            <td>invalid_email</td>
            <td>10006</td>
            <td>邮箱格式不合法（返回 <code>code: 10006</code>）</td>
        </tr>
        <tr>
            <td>T07</td>
            <td>用户名是必填项</td>
            <td>（空）</td>
            <td>Test123</td>
            <td>test@example.com</td>
            <td>10005</td>
            <td>用户名是必填项（返回 <code>code: 10005</code>）</td>
        </tr>
        <tr>
            <td>T08</td>
            <td>密码是必填项</td>
            <td>test_user</td>
            <td>（空）</td>
            <td>test@example.com</td>
            <td>10005</td>
            <td>密码是必填项（返回 <code>code: 10005</code>）</td>
        </tr>
        <tr>
            <td>T09</td>
            <td>邮箱是必填项</td>
            <td>test_user</td>
            <td>Test123</td>
            <td>（空）</td>
            <td>10005</td>
            <td>邮箱是必填项（返回 <code>code: 10005</code>）</td>
        </tr>
        <tr>
            <td>T10</td>
            <td>用户名长度超过限制</td>
            <td>verylongusername1234567890</td>
            <td>Test123</td>
            <td>test@example.com</td>
            <td>10004</td>
            <td>用户名长度超过限制（返回 <code>code: 10004</code>）</td>
        </tr>
    </table>

    <hr />

    <h2>2. 登录接口 (<code>/login</code>) 测试用例</h2>

    <table>
        <tr>
            <th>编号</th>
            <th>用例描述</th>
            <th>用户名</th>
            <th>密码</th>
            <th>预期状态码</th>
            <th>预期结果</th>
        </tr>
        <tr>
            <td>L01</td>
            <td>登录成功</td>
            <td>test_user</td>
            <td>Test123</td>
            <td>10000</td>
            <td>登录成功（返回 <code>code: 10000</code>）</td>
        </tr>
        <tr>
            <td>L02</td>
            <td>密码错误</td>
            <td>test_user</td>
            <td>Test1234</td>
            <td>10002</td>
            <td>密码错误（返回 <code>code: 10002</code>）</td>
        </tr>
        <tr>
            <td>L03</td>
            <td>用户名不存在</td>
            <td>wrong_user</td>
            <td>Test123</td>
            <td>10001</td>
            <td>用户名不存在（返回 <code>code: 10001</code>）</td>
        </tr>
        <tr>
            <td>L04</td>
            <td>用户名格式不合法</td>
            <td>t</td>
            <td>Test123</td>
            <td>10003</td>
            <td>用户名格式不合法（返回 <code>code: 10003</code>）</td>
        </tr>
        <tr>
            <td>L05</td>
            <td>密码格式不合法</td>
            <td>test_user</td>
            <td>123</td>
            <td>10004</td>
            <td>密码格式不合法（返回 <code>code: 10004</code>）</td>
        </tr>
        <tr>
            <td>L06</td>
            <td>用户名是必填项</td>
            <td>（空）</td>
            <td>Test123</td>
            <td>10005</td>
            <td>用户名是必填项（返回 <code>code: 10005</code>）</td>
        </tr>
        <tr>
            <td>L07</td>
            <td>密码是必填项</td>
            <td>test_user</td>
            <td>（空）</td>
            <td>10005</td>
            <td>密码是必填项（返回 <code>code: 10005</code>）</td>
        </tr>
    </table>

    <hr />

    <h2>3. 查询所有用户接口 (<code>/users</code>) 测试用例</h2>

    <table>
        <tr>
            <th>编号</th>
            <th>用例描述</th>
            <th>请求方式</th>
            <th>请求参数</th>
            <th>前置条件</th>
            <th>预期状态码</th>
            <th>预期结果</th>
        </tr>
        <tr>
            <td>G01</td>
            <td>返回用户列表</td>
            <td>GET</td>
            <td>无</td>
            <td>系统中已有至少一个用户</td>
            <td>10000</td>
            <td>返回用户列表（<code>code: 10000</code>）</td>
        </tr>
        <tr>
            <td>G02</td>
            <td>返回空数组</td>
            <td>GET</td>
            <td>无</td>
            <td>系统中没有用户</td>
            <td>10000</td>
            <td>返回空数组（<code>code: 10000</code>）</td>
        </tr>
        <tr>
            <td>G03</td>
            <td>POST</td>
            <td>任意</td>
            <td>使用非 GET 方法请求</td>
            <td>405</td>
            <td>返回 405 Method Not Allowed</td>
        </tr>
        <tr>
            <td>G04</td>
            <td>GET</td>
            <td>任意参数</td>
            <td>URL 中附加查询参数（如 ?id=1）</td>
            <td>10000</td>
            <td>忽略参数，返回完整用户列表</td>
        </tr>
    </table>

    <hr />

    <h3>📝 提示说明</h3>
    <ul>
        <li><strong>"（空）"</strong> 表示该字段为空或未传</li>
        <li><strong>"用户名区分大小写"</strong>：系统是否区分大小写根据数据库设计决定，建议学生验证</li>
        <li><strong>"返回 405"</strong>：表示请求方法不被允许，用于测试 HTTP 方法安全性</li>
    </ul>

</body>

</html>